約 2,957,175 件
https://w.atwiki.jp/tadaro/pages/310.html
VIPでROエミュTOP http //wikiwiki.jp/viptop/ 指定された鯖でTOPを目指す趣旨のスレ。 みんなでワイワイがんばりたいという人向け?かな。 wikiは攻略情報が充実しているので参考にするといいと思います。 コメント ただROとTOPと何実とかなり分かれたなもはやどれがどれだか -- (名無しさん) 2007-07-06 12 17 44 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/is01rebuild/pages/98.html
boot.scr作成 本項目は BeagleBoard-xM 向けです。IS01とは関係ありません。 boot.script を作成する 1024x768 の解像度の場合 mmc init fatload mmc 1 80200000 uImage setenv bootargs console=ttyS2,115200n8 mpurate=1000 androidboot.console=ttyS2 buddy=none mem=512M vram=16M omapfb.vram=0 8M,1 4M,2 4M omapfb.mode=dvi 1024x768MR-16@60 omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init bootm 0x80200000 setenv の行は実際は一行にすること。 下記のは、1280x720 58Hz で出てしまった。 mmc init fatload mmc 1 80200000 uImage setenv bootargs console=ttyS2,115200n8 mpurate=1000 androidboot.console=ttyS2 buddy=none mem=512M vram=16M omapfb.vram=0 8M,1 4M,2 4M omapfb.mode=dvi 1024x768MR-16@60 omapdss.def_disp=dvi root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init bootm 0x80200000 HDTV対応、PCディスプレイは1280x720 58Hzになっているが、テレビ側(レグザ)が合わせてくれたのかTVでも表示出来た。 mmc init fatload mmc 1 80200000 uImage setenv bootargs console=ttyS2,115200n8 androidboot.console=ttyS2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=dhcp rw mpurate=1000 omap_vout.vid1_static_vrfb_alloc=y vram=16M omapfb.vram=0 8M,1 4M,2 4M omapfb.mode=dvi hd720-24@60 omapdss.def_disp=dvi bootm 0x80200000 boot.scr を生成する mkimageを利用するため、インストールしていなければインストールを行う。 $ sudo apt-get install uboot-mkimage boot.scr を生成する $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "BeagleBoard" -d boot.script boot.scr TVの時の結果 Image Name BeagleBoard Created Tue Oct 4 00 12 38 2011 Image Type ARM Linux Script (uncompressed) Data Size 346 Bytes = 0.34 kB = 0.00 MB Load Address 0x00000000 Entry Point 0x00000000 Contents Image 0 338 Bytes = 0 kB = 0 MB TIのバイナリを利用して全部、再構築する場合 $ LANG=C sudo ./mkmmc-android.sh /dev/sdb 変更の場合 該当のみファイルを上書きする。 全部を更新する場合はMLO, u-boot.bin, btto.scr, uImage の順で書き込むと良いらしい…。 コメント 名前 コメント
https://w.atwiki.jp/is01rebuild/pages/15.html
OS、、クロスコンパイル環境、Androidのソースコード、boot.img の作成、、c Native プログラム等の開発環境。 一応、上から下に作業可能な順にしようと思う。 現状、日記状態。 具体的な修正箇所(パッチ)は修正(パッチ)を参照。 開発環境のOS(私の場合) WindowsXP 上に VMware Player を導入し、WMware Player に Ubuntu をインストール ゲスト用バーチャルマシン設定:CPU 4コア、mem 2GB、HDD raw接続、USB高速有効 Ubuntu 10.04 LTS (x64版) vmware tool インストール クロスコンパイル環境 面倒なときは、Android NDK をダウンロードして、gcc の部分を使用。 boot.img を作成する場合、面倒なのだが mkbootimage をコンパイルしないといけないので、 Androidのソースコードも必要になってくる。 Android 2.2 ソースコードの入手 repo の導入は他のサイトに譲るとして、 Android 2.2_r1.3 は下記のように入手。 $repo init -u git //android.git.kernel.org/platform/manifest.git -b android-2.2_r1.3 $repo sync Linux で adb や ddms を利用するには? 重要な事を忘れていました。 Linux で adb や ddms を利用するには次の設定が必要です /etc/udev/rules.d/51-android.rules に下記のように書いています。 SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666" 以下、別ページにまとめ中 一応、make する。 boot.img 作成の為だけに使用するなら、 mkbootimg.c の変更だけでよい。 IS01向けにコンパイルするなら、共有ライブラリのアドレスを修正しなければならない。 修正(パッチ)←詳細ページ boot.img の作成 unubinze した後、splitしてカーネルとcpioファイルに分割。 出てきた、cpioファイルを展開して ramdisk ディレクトリを得る。 boot.img の作成←詳細ページ c Nativeプログラムの作成 結構コツが必要。 特に、linker とか。 hello world 出すだけで、12時間くらい試行錯誤…。。。 c言語のプログラム、タッチパネルなどを参照 Android 2.2_r1.3の bin と lib を動かす とりあえず、完了。 以下、ヒント。 JN-DK01 # 0x80000000 - 0xFFFFFFFF Kernel # 0x70100000 - 0x7FFFFFFF Thread 0 Stack # 0x70000000 - 0x700FFFFF Linker # 0x60000000 - 0x6FFFFFFF Prelinked System Libraries # 0x50000000 - 0x5FFFFFFF Prelinked App Libraries # 0x40000000 - 0x4FFFFFFF Non-prelinked Libraries # 0x2AAAAAAA - 0x3FFFFFFF mmap d stuff # 0x10000000 - 0x2AAAAAA9 Thread Stacks # 0x00000000 - 0x0FFFFFFF .text / .data / heap 詳細は修正(パッチ)参照。 Andoroid 2.2_r1.3 を動かす! とりあえず、運が良ければ起動する。 init.rc コメント、突っ込み、間違い指摘、要望など有りましたら下記までどうぞ。 名前 コメント
https://w.atwiki.jp/is01rebuild/pages/18.html
Android のソースコードでエラーを出さずにmakeする方法。 Ubuntu 10.04 LTS (x64版) での場合。 必要ライブラリをインストールする。 当初 mtd-utils パッケージが抜けていたので追加した(2010/12/25 07 20) $ sudo apt-get install \ git-core \ gnupg \ flex \ bison \ gperf \ build-essential \ zip \ curl \ zlib1g-dev \ gcc-multilib \ g++-multilib \ libc6-dev-i386 \ lib32ncurses5-dev \ ia32-libs \ x11proto-core-dev \ libx11-dev \ lib32readline5-dev \ lib32z-dev \ libc6-dev-i386 \ lib32ncurses5-dev \ lib32readline5-dev \ mtd-utils さらに、下記URLより getlibs をダウンロードしインストール http //frozenfox.freehostia.com/cappy/ 関連ライブラリをインストール $getlibs -l libz.so libz.so zlib1g-dev 何か、抜けてるかもしれません。 依存関係でエラーが出たらコメントでお知らせいただければ幸いです。 Javaのインストール $ sudo add-apt-repository "deb http //archive.canonical.com/ lucid partner" $ sudo add-apt-repository "deb http //us.archive.ubuntu.com/ubuntu/ jaunty multiverse" $ sudo add-apt-repository "deb http //us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse" $ sudo apt-get update $ sudo apt-get install sun-java5-jdk $ sudo apt-get install sun-java6-jdk Javaのバージョン切り替え方法 $ sudo update-java-alternatives -s java-1.5.0-sun $ sudo update-java-alternatives -s java-6-sun Javaのスタックの指定 システムリソースが不足しています。 詳細は次のスタックトレースで調査してください。 というエラーの対策。 $export ANT_OPTS="-Xmx512m" さらに必要なら 512 を 1024 に位増やしてみる。 以上で、 make が通るようになるかと思う。 WARNING は大量に出るが、エラーで止まらなければ突き進む。 USE_CCACHEを入れると make 時間が短縮するらしい。 export USE_CCACHE=1 最適化する。 make時間の短縮…下記は4コア CPU の場合。 TARGET CPUへの最適化、 Java の ust-In-Time Compiler の有効化。 export TARGET_ARCH_VARIANT=armv7-a export WITH_JIT=true make -j4 showcommands 2 1 | tee make.log make するための Makefile を書いても良いのですが、別に更新の有無を調べるわけじゃなし…。 手抜きするために、下記の様な shell スクリプトを書いても良いかも。 #!/bin/bash export ANT_OPTS="-Xmx1024m" export USE_CCACHE=1 export TARGET_ARCH_VARIANT=armv7-a-neon export WITH_JIT=true date maketime.txt time make -j3 showcommands 2 1 | tee make.log date maketime.txt cat maketime.txt date と time は単に実行時刻、終了時刻、コンパイル時間を表示するためだけです。 メント、突っ込み、間違い指摘、要望受付中 armv7-a-neon も試す価値があるかもしれません -- 匿名 (2010-12-23 13 57 54) ありがとうございます。armv7-a-neon 検討します。 -- is01rebuild (2010-12-25 06 41 21) 名前 コメント
https://w.atwiki.jp/is01rebuild/pages/46.html
Superuserを使う ChainsDD氏のSuperuserを使うには? Superuserアプリの方 http //forum.xda-developers.com/showthread.php?t=682828 このあたりから、Eclair/Froyo 向け su-2.3.6.1-ef-signed.zip をダウンロードして展開すると、 Superuser.apk があるのでインストールする。 $ adb install Superuser.apk ルートが必要なアプリを利用すると、”Superuserリクエスト”が出るので許可を出す。 rootが必要なアプリ ClockSync などが利用可能となる。 ソースを取得する。 $Android_SRC をカレントディレクトリとして $ git clone git //github.com/ChainsDD/android_system_extras.git -b froyo 実機向けSUコマンドを make する。 ソースに修正を入れる(仙石氏のWebサイト http //www.gcd.org/blog/2010/11/671/ より) $ANDROID_SRC/android_system_extras/su/su.c $ diff -u su.c.orig su.c --- su.c.orig2011-01-14 19 10 33.361493478 +0900 +++ su.c2011-01-14 19 10 57.517115973 +0900 @@ -96,7 +96,7 @@ } /* If this isn t app_process, use the real path instead of argv[0] */ - snprintf(path, sizeof(path), "/proc/%u/exe", from- pid); + /*snprintf(path, sizeof(path), "/proc/%u/exe", from- pid); len = readlink(path, exe, sizeof(exe)); if (len 0) { PLOGE("Getting exe path"); @@ -106,7 +106,7 @@ if (strcmp(exe, "/system/bin/app_process")) { argv0 = exe; } - + */ strncpy(from- bin, argv0, sizeof(from- bin)); from- bin[sizeof(from- bin)-1] = \0 ; makeする。 2.3.1_r1ではAndroid.mkの LOCAL_SHARED_LIBRARIES を下記のようにすると mm が通った。最後の3つが追加部分。 LOCAL_SHARED_LIBRARIES = liblog libsqlite libandroid_runtime libbinder libutils libcutils $ cd android_system_extras/su $ mm … Install out/target/product/generic/system/xbin/su … 完了 $ cd ../../out/target/product/generic/system/xbin/ $ adb push su /system/xbin/ $ adb shell chmod 6755 /system/xbin/su 最後に、 android_system_extras が $ANDROID_SRC にあると make がエラーが出た。 整合性を調整するより、mv でディレクトリごと他に待避させた。 # mv android_system_extras ../ 以上 コメント 2.3.2だとsuでエラーになります。詳細はSourceForgeに記述してあります。 -- RO215IS01 (2011-03-02 04 31 25) 名前 コメント (2011/01/14 19 31 公開)
https://w.atwiki.jp/is01rebuild/pages/90.html
kernel全般について 現在テスト中の kernel ソースコードについて wikiに貼り付けると大量になるので github にすべてをアップしている。 私自身がkernel側コードは素人の為、 DEBUGメッセージの有効化 大量の日本語コメントの追加 元々のkernel では出力されない情報を printk にて追加 している。 間違いがあれば、Twitterかコメント欄にてお知らせ頂けると幸いです。 https //github.com/is01rebuild/is01_kernel_2_6_29_debug github にアップしているae2drv(音源周りドライバ)はトレース可能にしたもののエラー処理を所々省いているため、長時間運用はできないので注意の事。 実機拡張部分 仙石氏のサイトを参考にして、DECKARD LSM Support と Enable different security models を外した。 Security options --- [ ] Enable access key retention support [*] Enable different security models [ ] Enable the securityfs filesystem [ ] Socket and Networking Security Hooks [*] Security hooks for pathname based access control [ ] File POSIX Capabilities [*] DECKARD LSM Support (/dev/block/mtdblock5) block device driver name for /system chroot() enable PATH swapするならここで有効にする。(デフォルトkernelなのでcompcacheは独自に入れないといけない。) General setup --- [ ] Support for paging of anonymous memory (swap) Android独自拡張部分 kernel menuconfigにて Device Drivers --- [*] Misc devices --- [*] Android pmem allocator [ ] Android pmem debug M Simple module to test Android pmem kernel API [*] Staging drivers --- Android --- [*] Android Drivers [*] Android Binder IPC Driver * Android log driver M Simple module to test Android log driver [*] Android RAM buffer console [*] Enable verbose console messages on Android RAM console [ ] Android RAM Console Enable error correction --- [ ] Start Android RAM console early [*] Timed output class driver * Android timed gpio driver [*] Android Low Memory Killer [*] Android for Engineering 他にも見落としがあると思います。 kernel の debugfs を利用する # mount -t debugfs none /sys/kernel/debug pmem の debug を有効にする Device Drivers --- [*] Misc devices --- [*] Android pmem debug pmem の debug メッセージが出ないと思ったら、 kernel/dirveres/misc/pmem.c に次のような設定がされていた。 #define PMEM_DEBUG_MSGS 0 #if PMEM_DEBUG_MSGS #define DLOG(fmt,args...) \ do { printk(KERN_INFO "[%s %s %d] "fmt, __FILE__, __func__, __LINE__, \ ##args); } \ while (0) #else #define DLOG(x...) do {} while (0) #endif の PMEM_DEBUG_MSGS 定義を次のように変更する。 #define PMEM_DEBUG_MSGS 1 I2Cのdebugを有効にする Device Drivers --- -*- I2C support --- --- I2C support * I2C device interface [*] Autoselect pertinent helper modules I2C Hardware Bus support --- Miscellaneous I2C Chip support --- [*] I2C Core debugging messages [*] I2C Algorithm debugging messages [*] I2C Bus debugging messages [*] I2C Chip debugging messages Audio関連 現状どういう状態かよく分かっていない。 しかし、下記オプションは有効になっていたため、debugも有効にした。 Device Drivers --- * Sound card support --- * Advanced Linux Sound Architecture --- --- Advanced Linux Sound Architecture [*] Support old ALSA API [*] Verbose procfs contents [*] Verbose printk [*] Debug [*] More verbose debug パワー・マネージメント 主に /sys/power 以下のこと /sys/power は、kernelソースにおいて、 kernel/kernel/power/main.c ファイル内 static int __init pm_init(void) { power_kobj = kobject_create_and_add("power", NULL); if (!power_kobj) return -ENOMEM; return sysfs_create_group(power_kobj, attr_group); } で作成されている(と思う^^;) /sys/power/* は上記ディレクトリに複数関数があるためその辺で追加されているのかもしれないし、 追加する標準的手続きがあるのかもしれない。(個人的に分かっていない…orz) ひとまず、追ってみようと思う。 kernelのパワーマネージメントのDEBUGを有効にする。 Power management options --- [*] Power Management Debug Spport [*] Verbose Power Management debugging ソースコード内でのdebugレベルを指定する。 以前、手動で diff を取っていたが、現在 git を使っているので、gitで diff を取得してみた。 diff --git a/kernel/power/userwakelock.c b/kernel/power/userwakelock.c index d7242d9..f4b64ce 100755 --- a/kernel/power/userwakelock.c +++ b/kernel/power/userwakelock.c @@ -26,7 +26,7 @@ enum { DEBUG_ACCESS = BIT(3), DEBUG_LOOKUP = BIT(4), }; -static int debug_mask = DEBUG_FAILURE; +static int debug_mask = DEBUG_FAILURE|DEBUG_ERROR|DEBUG_NEW|DEBUG_ACCESS|DEBUG_LOOKUP; module_param_named(debug_mask, debug_mask, int, S_IRUGO | S_IWUSR | S_IWGRP); static DEFINE_MUTEX(tree_lock); diff --git a/kernel/power/wakelock.c b/kernel/power/wakelock.c index a452377..0fb3ad7 100755 --- a/kernel/power/wakelock.c +++ b/kernel/power/wakelock.c @@ -31,7 +31,7 @@ enum { DEBUG_EXPIRE = 1U 3, DEBUG_WAKE_LOCK = 1U 4, }; -static int debug_mask = DEBUG_EXIT_SUSPEND | DEBUG_WAKEUP; +static int debug_mask = DEBUG_EXIT_SUSPEND | DEBUG_WAKEUP | DEBUG_WAKE_LOCK; module_param_named(debug_mask, debug_mask, int, S_IRUGO | S_IWUSR | S_IWGRP); #define WAKE_LOCK_TYPE_MASK (0x0f) まだ、自分で試していないので、fi01さんのをそのままコピーしています 334 :fi01 ◆w.f0Q9VCUk :2011/02 /15(火) 17 36 04 ID +ZuucmDA SDカードがマウント出来るようになってからAngryBirdsが インストール出来なくなっていたが、SDカードへ インストールしようとして失敗していた模様。 カーネルにdevice-mapperとtwofish暗号の追加で解決した。 コンフィグの差分は下記の通り。 CONFIG_MD=y CONFIG_BLK_DEV_DM=y CONFIG_DM_DEBUG=y CONFIG_DM_CRYPT=y CONFIG_DM_SNAPSHOT=y CONFIG_DM_MIRROR=y CONFIG_DM_ZERO=y CONFIG_DM_MULTIPATH=y CONFIG_DM_DELAY=y CONFIG_DM_UEVENT=y CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_TWOFISH_COMMON=y 936 :fi01 ◆w.f0Q9VCUk :2011/03 /02(水) 19 14 56.46 ID G7Nf29Ov DevRenaxさんが公開されたファイルをベースにRO178さん、RO215さん達の成果を マージしたCyanogenmod(froyo-stableブランチ)をビルドしましたが、なかなか良いです。 build.propを変更しなくてもマーケットからFlash Playerがダウンロード出来ました。 Spaghetti Marshmallows Liteが楽しいです。 hwアクセラレータが使えないのでNightモードにしないとキツイですが、一応遊べます。 カーネルオプションのVMSPLIT_2GをVMSPLIT_3Gに変更するとprelink-mapを修正しなくても 動作する様になったのですが、VMSPLIT_2Gにする理由って何だろう? VMSPLIT_3Gで問題無ければprelinkのアドレスで悩む必要が無くなると思うのですが。 menuconfig 該当部分 Kernel Features --- Memory split (1G/3G user/kernel split) --- ( ) 3G/1G user/kernel split (X) 2G/2G user/kernel split ( ) 1G/3G user/kernel split 何かお気づきの点が有りましたら、Twitterか下記まで。 コメント 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/is01rebuild/pages/33.html
無線LANを有効にするには… wpa_supplicant の Android.mk を編集 $ANDROID_SRC/external/wpa_supplicant/Android.mk $ diff -ubB Android.mk.orig Android.mk --- Android.mk.orig2010-12-28 11 11 31.411768956 +0900 +++ Android.mk2011-01-05 18 15 19.260587500 +0900 @@ -22,12 +22,14 @@ LOCAL_PATH = $(call my-dir) WPA_BUILD_SUPPLICANT = true -ifneq ($(TARGET_SIMULATOR),true) +BOARD_WPA_SUPPLICANT_DRIVER = WEXT + +#ifneq ($(TARGET_SIMULATOR),true) ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),) WPA_BUILD_SUPPLICANT = true CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) = y endif -endif +#endif include $(LOCAL_PATH)/.config make する。 wpa_supplicant を生成、実機に転送する。 init.rc を編集。 カーネルモジュールの insmod や wpa_supplicant、dhcpcd、 その他serviceを起動するようにする。 1.6 のほぼ全ての service や ディレクトリ構成を引用してきて、 明らかにエラーな service は停止する。 1.6の wpa_supplicant.conf をすげ替え環境にコピーする。 wpa_supplicant.confを編集する。 update_config=1 の行の下にに下記をを追加 ctrl_interface=DIR=/data/misc/wifi/sockets しておくと、安心かもしれない。 次のディレクトリは init.rc にて、作成、own、mod を正しく設定するようにする。 /data/misc/wifi/sockets Linux native環境(Terminal)で動くか試す。 エラーが出る場合は →permissionの無線LANについてを確認してみる。 # chown system system /sys/bus/platform/devices/msm_sdcc.1/polling は init.qcom.rc にて行われているかと思う(完全に解説するのを忘れていました。。。) さらに、忘れ発覚。 デフォルトの /system/etc/firmware 以下すべてを symlink 環境の同位置にコピーしておく事。 # echo 1 /sys/devices/platform/bwpm/wifi # echo 1 /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling 以上を行って # dmesg で確認してみる。 失敗した場合は、permissionやownerが異なっている可能性がある。 # echo 0 /sys/devices/platform/bwpm/wifi # echo 0 /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling で一端、無線LANをoffにして再度確認してみると良い。 下記は init 及び、 init.rc のログレベルを上げている。(修正(パッチ)で行った変更の通り) 3 [ 6147.362606] [bwpm] bwpm_wifi_on RF ON 3 [ 6147.400039] [bwpm] bwpm_wifi_on change status (0- 1) 6 [ 6153.012392] mmc1 mmc_rescan detect a newly inserted card 3 [ 6153.054239] mmc1 Command timeout(CMD = 8, ARG = 0x000001AA) 6 [ 6153.059259] mmc1 mmc_rescan search SDIO card 6 [ 6153.123512] mmc1 new high speed SDIO card at address 0001 6 [ 6153.126392] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001 , mmc , , -1, -1 } 6 [ 6153.129706] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1 , sdio , , -1, -1 } 4 [ 6153.130079] sdio bus_id mmc1 0001 1 - UniFi card 0x1 inserted 6 [ 6153.132966] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/unifi/unifi1 , unifi , , 229, 2 } 6 [ 6153.136572] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/unifi/unifiudi1 , unifi , , 229, 3 } 4 [ 6153.205499] Unifi Fetching firmware patch for firmware build 0 6 [ 6153.205519] unifi1 Initialising UniFi, attempt 1 6 [ 6153.205839] unifi1 Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x) 6 [ 6153.250066] unifi1 Chip Version 0x2822 6 [ 6153.250079] unifi1 Falling back to software hard reset 6 [ 6153.250092] unifi1 Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x) 4 [ 6153.340866] Unifi Firmware build 743 4 [ 6153.340879] Unifi Fetching firmware patch for firmware build 743 6 [ 6153.340892] unifi mmc1 0001 1 firmware requesting unifi-sdio-1/a05/sta.xbv 6 [ 6153.343599] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/firmware/mmc1 0001 1 , firmware , unifi-sdio-1/a05/sta.xbv , -1, -1 } 6 [ 6153.344199] init firmware event { /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/firmware/mmc1 0001 1 , unifi-sdio-1/a05/sta.xbv } 6 [ 6153.348612] init firmware copy success { /sys/devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/firmware/mmc1 0001 1/ , /etc/firmware/unifi-sdio-1/a05/sta.xbv } 6 [ 6153.351692] init event { remove , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/firmware/mmc1 0001 1 , firmware , unifi-sdio-1/a05/sta.xbv , -1, -1 } 6 [ 6153.351819] init waitpid returned pid 2108, status = 00000000 3 [ 6153.351839] init untracked pid 2108 exited 6 [ 6153.351946] unifi1 unifi_dl_patch 8db5937c 0100060e 6 [ 6153.682166] unifi1 UniFi f/w protocol version 8.0 (driver 8.0) 6 [ 6153.682179] unifi1 Firmware build 743 2009-09-08 16 22 cindr0201_core_sta_rom_sdio_gc 6 [ 6154.935879] init event { add , /devices/platform/msm_sdcc.1/mmc_host/mmc1/mmc1 0001/mmc1 0001 1/net/wlan0 , net , , -1, -1 } 5 [ 6154.938939] unifi1 unifi1 is wlan0 6 [ 6154.939546] unifi1 UniFi ready 等と出れば成功。 続いて、 # bysubox ifconfig -a で確認してみる。 wlan0 Link encap Ethernet HWaddr A0 DD E5 22 22 22 BROADCAST MULTICAST MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overruns 0 frame 0 TX packets 0 errors 0 dropped 0 overruns 0 carrier 0 collisions 0 txqueuelen 1000 RX bytes 0 (0.0 B) TX bytes 0 (0.0 B) と最後の方に出てくれば、Linuxレベルでは wlan0 を認識している。 参考:Android1.6 起動時のdmesg より(initのログレベルが通常の場合) また、IS01のGPLソース、wifi_kernel_driver_build198.tar.gz も参考になるかと思う。 ただ、量が量なのでちゃんと見ていない。 3 [ 0.951760] [bwpm] Bluetooth/Wifi Power Management … 3 [ 30.899419] [bwpm] bwpm_wifi_on RF ON 3 [ 30.930073] [bwpm] bwpm_wifi_on change status (0- 1) 6 [ 30.932859] mmc1 mmc_rescan detect a newly inserted card 3 [ 30.974273] mmc1 Command timeout(CMD = 8, ARG = 0x000001AA) 6 [ 30.979286] mmc1 mmc_rescan search SDIO card 6 [ 31.024239] mmc1 new high speed SDIO card at address 0001 4 [ 31.028126] sdio bus_id mmc1 0001 1 - UniFi card 0x1 inserted 4 [ 31.056186] Unifi Fetching firmware patch for firmware build 0 6 [ 31.056206] unifi1 Initialising UniFi, attempt 1 6 [ 31.056546] unifi1 Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x) 6 [ 31.100066] unifi1 Chip Version 0x2822 6 [ 31.100079] unifi1 Falling back to software hard reset 6 [ 31.100099] unifi1 Chip ID 0x07 Function 1 Block Size 512 Name UniFi-4(UF602x) 4 [ 31.190059] Unifi Firmware build 743 4 [ 31.190073] Unifi Fetching firmware patch for firmware build 743 6 [ 31.190093] unifi mmc1 0001 1 firmware requesting unifi-sdio-1/a05/sta.xbv 6 [ 31.198033] init waitpid returned pid 1439, status = 00000000 3 [ 31.198053] init untracked pid 1439 exited 6 [ 31.198173] unifi1 unifi_dl_patch 8c9a837c 0100060e 4 [ 31.380126] uart_ioctl() msm_hs_request_clock_off() 4 [ 31.390073] uart_ioctl() msm_hs_request_clock_on() 6 [ 31.532179] unifi1 UniFi f/w protocol version 8.0 (driver 8.0) 6 [ 31.532193] unifi1 Firmware build 743 2009-09-08 16 22 cindr0201_core_sta_rom_sdio_gc 5 [ 32.820539] unifi1 unifi1 is wlan0 6 [ 32.820566] unifi1 UniFi ready 5 [ 32.935346] init starting wpa_supplicant 6 [ 32.935826] init Created socket /dev/socket/wpa_wlan0 with mode 660 , user 1010 , group 1010 インタフェースをアップした後は、 # start wpa_supplicant # start dhcpcd busybox ifconfig -a 等で、IPが取れているか確認する。 wlan0 が有り、IPが取得できていれば init.rc の編集は成功している。 ただし、IPアドレスが自分のネットワークと違う場合はDHCPサーバからIPを取得出来ていない可能性がある。 wpa_supplicant の動作確認は、init.rc にserviceを登録していれば、 # start wpa_supplicant 登録していないか、登録に失敗しているならば、 # /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd で行う。 # ls /data/misc/wifi/sockets # wlan0 と wlan0 ファイルが出来ていれば、wpa_supplicant は起動に成功している。 # wpa_cli -p/data/misc/wifi/sockets -iwlan0 で、動作確認をする。 wpa_cli v0.5.11 Copyright (c) 2004-2008, Jouni Malinen j@w1.fi and contributors (省略) Interactive mode となれば、成功。 引き続き、確認を行う。 scan OK status 現在の状態が表示される。 help (コマンドヘルプが表示される) quit # quite で終了。bash を入れていれば、Ctrl+c でもOK。 無線LAN APに接続する。 # start dhcpcd もしくは、 # /system/bin/dhcpd -dd wlan0 busybox の ifconfig -a 等でIPが確認できる。 #ifconfig -a IPアドレスが取れていれば成功。 次では、Android 画面上で無線LANを有効にしてみます。 GUIで無線LANを有効にする comment Android.mk でなく、 /build/target/board/generic/BoardConfig.mk に、"WPA_BUILD_SUPPLICANT = 1" と "BOARD_WPA_SUPPLICANT_DRIVER = WEXT" を記述すると同じ効果が得られます。パラメータ類は此処に書くのが良いようです。 -- RO215IS01 (2011-01-14 04 25 20) ありがとうございます。助かります。 vendorディレクトリから作るとより良いかもしれませんね。 -- is01rebuild (2011-01-14 18 58 45) コピーした1.6の wpa_supplicant.confを編集するとき注意。"network={" 内に "disabled=1"が定義されていれば消す必要がある。 複数APで運用していた人のwpa_supplicant.confには"disabled=1"が記述されているのかも・・・。 -- 初心者 (2011-01-18 19 14 45) 名前 コメント
https://w.atwiki.jp/emyunouwasa/pages/2.html
メニュー トップ エミュ鯖とは エミュ鯖 やり方 エミュ鯖紹介 掲示板 ??? リンク @wiki @wikiご利用ガイド ここを編集
https://w.atwiki.jp/is01rebuild/pages/79.html
現在、まったく分かっていません…orz アドバイス等あれば、 Twitter か下記コメント欄に記入して頂けると幸いです。 現在の状況 完了 msm_audio_dev_ctrl への入出力 ae2drv をkernelモジュール化した ae2drv の完全可視化は完了(※エラー処理除く) ae2drv関連については別ページにした。→ae2関連 /dev/msm_* は kernel/arch/arm/mach-msm/qdsp6 以下にある /dev/ae2 をオープンすると、ma_Open が呼ばれる Audio初期化ルーチン周辺でkernel の ma_Open が呼ばれる→ae2関連 確認中 ae2drv.c 内で GPIO 関連の呼び出しがある→GPIO関連 どうも再生時に /dev/i2c-0 へ書き込みをしている→I2C関連 無保証です。DEBUG中に2回ほど、リブートしました。(/dev/ae2 を2重openするとダメのようだ) 電源管理(音源チップ、スピーカアンプ)→kernel関連??? msm8k_cad はkernel内で呼び出されているようだ。 現状の未着手な課題 I2Cの内容は不明 I2Sの内容も未解明 (仕様すら調べていない…) smd_shdiag_open とは何か? ボリューム調整 kernel の pmem の調査 /dev/pmem_adsp は全く着手していない 予想される流れ、進捗と現在 /dev/msm_audio_dev_ctrl 初期化 実装完了 ↓ /dev/ae2 初期化 ソースコード部分ほぼ実装完了。 変数、未完了。 → ae2drv 内にてGPIOもONされる ↓ どこかで、パワーマネージメント関連が関係?? /dev/power以下を試験中 ↓ I2Cアクセス 実装完了 変数、未完了 ↓ (I2S)→(msm8k_cad)→(msm8k_eqlzr) ↓ /dev/msm_pcm へ Audio データ転送 実装完了 ( )は直接コールせず、kernel内で連鎖的に呼び出されるかも(?)な項目 ae2…dump&trace完了 ただし、バイナリの意味は不明 GPIO…dump&trace半完了 ただし、バイナリの意味は不明 msm_audio_dev_ctrl…dump&trace完了 内容もほぼ判明 msm_pcm…デフォルトのDEBUGをonにした。詳細未解明だが、PCMデータを流し込めばいけそう。 本内容について 2ch root4スレにて、27氏の発言169-172における sound コマンド fi01氏の214における /dev/i2c-0 周り情報 kernel 内にて必要箇所の DEBUG を有効にした結果 をまとめたもの。 はじめに 私はコレをチェックせずにちょっと遠回りした。 ls -l /dev/ | grep audio crw-rw-rw- system audio 239, 0 2011-02-10 23 50 ae2 crw-rw---- system audio 10, 1 2011-02-10 23 50 pmem_adsp crw-rw---- system audio 10, 44 2011-02-10 23 50 msm_qcelp_in crw-rw---- system audio 10, 45 2011-02-10 23 50 msm_evrc_in crw-rw-rw- system audio 10, 46 2011-02-10 23 50 msm_audio_dev_ctrl crw-rw-rw- system audio 10, 49 2011-02-10 23 50 msm_voice crw-rw---- system audio 10, 51 2011-02-10 23 50 msm_mp3 crw-rw---- system audio 10, 52 2011-02-10 23 50 msm_aac_in crw-rw---- system audio 10, 53 2011-02-10 23 50 msm_aac crw-rw-rw- system audio 10, 54 2011-02-10 23 50 msm_pcm_in crw-rw-rw- system audio 10, 55 2011-02-10 23 50 msm_pcm アドレスで分かっている事 kernel/drivers/yamaha/ae2drv.c gpsDriver- pMemory = ioremap( 0x90000000, 64 ); 物理アドレス0x90000000を先頭として64バイト幅をカーネル空間へマッピング? IRQ周り 抽出しただけで、まだ定義を追いかけていない。 kernel/drivers/yamaha/ae2drv.c gpsDriver- dIrq = MSM_GPIO_TO_INT(28); sdResult = request_irq( gpsDriver- dIrq, ma_IrqHandler, IRQF_TRIGGER_FALLING, MA_DEVICE_NAME, gpsDriver ); GPIO周り 番号 方向 プル状態 Drive Strength (?) 有効/無効 027 出力 無し GPIO_2MA 有効 028 入力 プルダウン GPIO_2MA 有効 102 出力 無し GPIO_2MA 有効 121 出力 無し GPIO_2MA 有効 ソース部分 kernel/drivers/yamaha/ae2drv.c gpio_tlmm_config(GPIO_CFG(27, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE); gpio_tlmm_config(GPIO_CFG(28, 0, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), GPIO_ENABLE); gpio_tlmm_config(GPIO_CFG(102, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE); gpio_tlmm_config(GPIO_CFG(121, 0, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA), GPIO_ENABLE); arch/arm/mach-msm/board-deckard.c static unsigned audio_gpio_on[] = { GPIO_CFG(68, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* PCM_DOUT */ GPIO_CFG(69, 1, GPIO_INPUT, GPIO_NO_PULL, GPIO_2MA),/* PCM_DIN */ GPIO_CFG(70, 2, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* PCM_SYNC */ GPIO_CFG(71, 2, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* PCM_CLK */ GPIO_CFG(142, 2, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* CC_I2S_CLK */ GPIO_CFG(143, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* SADC_WSOUT */ GPIO_CFG(144, 1, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA),/* SADC_DIN */ GPIO_CFG(145, 1, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* SDAC_DOUT */ GPIO_CFG(146, 2, GPIO_OUTPUT, GPIO_NO_PULL, GPIO_2MA),/* MA_CLK_OUT */ }; /dev/msm_* 関連の include ファイル kernel/include/linux/msm_audio.h kernel/arch/arm/mach-msm/include/mach/qdsp6/msm8k_cad_ioctl.h kernel/arch/arm/mach-msm/include/mach/qdsp6/msm8k_cad_devices.h kernel/arch/arm/mach-msm/include/mach/qdsp6/msm8k_cad_volume.h kernel/arch/arm/mach-msm/include/mach/qdsp6/msm8k_adsp_audio_device.h /dev/msm_* 関連の DEBUG を有効にする。 kernelにおいて Audio 周りをつかさどっているであろう部分で DEBUG 情報を出力するように改変する。 kernel/arch/arm/mach-msm/qdsp6 以下にある、*.c ファイルの下記部分を #if 0 #define D(fmt, args...) printk(KERN_INFO "msm8k_pcm " fmt, ##args) #else #define D(fmt, args...) do {} while (0) #endif を片っ端から次のように編集する。 #if 1 #define D(fmt, args...) printk(KERN_INFO "msm8k_pcm " fmt, ##args) #else #define D(fmt, args...) do {} while (0) #endif これで、かなりの DEBUG メッセージが dmesg すると出てくるようになる。 さらに、ioctl されているが、内容が分からないので出力するように変更した。 下記は、msm8k_pcm.c の例である。 $ diff -u msm8k_pcm.c.orig msm8k_pcm.c --- msm8k_pcm.c.orig2011-02-09 00 39 31.563458406 +0900 +++ msm8k_pcm.c2011-02-07 23 36 23.694297428 +0900 @@ -89,7 +89,7 @@ #include mach/qdsp6/msm8k_cad_volume.h #include mach/qdsp6/msm8k_cad_q6eq_drvi.h -#if 0 +#if 1 #define D(fmt, args...) printk(KERN_INFO "msm8k_pcm " fmt, ##args) #else #define D(fmt, args...) do {} while (0) @@ -237,7 +237,7 @@ u32 percentage; struct cad_event_struct_type eos_event; -D("%s\n", __func__); +D("%s cmd=%x , arg=%lx\n", __func__ , cmd , arg ); memset( cad_dev, 0, sizeof(struct cad_device_struct_type)); memset( cad_stream_dev, 0, あとは、make、boot.img化、ubi化して実機に転送すればok。 私の環境では、make は下記のようになる、CROSS_COMPILE=以降は適宜、自分の環境に合わせて欲しい。 make ARCH=arm CROSS_COMPILE=../../froyo_orig/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- kernel は arch/arm/boot/Image がその本体である。 cp -a arch/arm/boot/Image ../../mtd/froyo_boot/ /dev/msm_* 関連の DEBUG 情報の見方 DEBUGを有効にして起動したkernelにて、 # dmesg した結果を抜粋して、数値データの意味を説明する。 6 [ 134.871839] msm8k_cad Registered the async callback function!!! 6 [ 134.871859] msm8k_pcm msm8k_pcm_ioctl cmd=80046103 , arg=7e896b08 6 [ 134.871886] msm8k_pcm msm8k_pcm_ioctl cmd=40046104 , arg=7e896b08 6 [ 134.872099] msm8k_pcm msm8k_pcm_ioctl cmd=40046100 , arg=0 まず、cmd = 80046103 等の cmd の値だが、 $ANDROID_SRC/system/extras/sound/playwav.c を例に挙げて説明すると、 #include linux/ioctl.h (省略) #define AUDIO_IOCTL_MAGIC a #define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned) #define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned) #define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned) #define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned) #define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned) #define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned) (省略) /* config change should be a read-modify-write operation */ if (ioctl(afd, AUDIO_GET_CONFIG, cfg)) { で、AUDIO_GET_CONFIG は _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned) と変換される。 _IOR や _IOW は kernelのヘッダファイルの linux/ioctl.h で定義されている。 ざっと見た感じでは、unsigned int に変換されていて、下記のようなフォーマットに至る。(と思う…あとで、確認します^^;) cmd = 80046103 だと、 32bit 2bit 14bit 8bit 8bit read write 引数のsize(バイト数) type nr 1 0 (unsigned int)=32bi=4byte=0x004 AUDIO_IOCTL_MAGIC= a =0x61 AUDIO_GET_CONFIG=3 と言う事になる(ようだ^^;)。 間違ってたらごめんなさい。 (書いてるときに面倒になってきて、ヘッダファイルのビット数の所確認していない。32bitが4になってるので4バイトか4オクテットの意味と思う) arg は変数へのポインタなので実行時によって変わるはず。 また、AUDIO_START等のioctlでの全cmd定義は kernel/linux/msm_audio.h にある。 間違いが多く含まれているかもしれません、何かお気づきの点が有りましたら、Twitterか下記まで。 コメント IS01 root スレ4 で、goroh_kun さんがオーディオ関連の情報を書き込んでいました。 以下に引用します。 カーネルのソースコード見ると、 arch/arm/mach-msm/pmic_debugfs.c っていうのがあって、 #mount -t debugfs debugfs /sys/kernel/debug #/sys/kernel/debug/pmic #ls debug index # cat /proc/kmsg # echo 9 index #RTC_GET_TIME_PROC # cat debug とかやると、いろいろなデバッグ用関数を呼び出せます。 debugはechoでパラメータ入れてあげるか、catで内容を見れます。 indexに書き込む数字とdebugへの操作はソースコード参照してください。 arch/arm/mach-msm/pmic.cを見るとだいたいindexに書き込む数字と 機能の割り当て対応は分かると思います。 音源関連のデバッグ関数も多数存在します。 -- (Yukto8492) 2011-03-30 10 57 31 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/vipdelol/pages/177.html
PBE server クライアント http //pbe.leagueoflegends.com/en/signup/redownload アカウント作成 https //pbe.leagueoflegends.com/en/signup/index 仕様 もともとは実装前の新Champを試すための鯖なのだが アカウント作成してから一度ログイン→約半日経過でLv30化 4000RP+10000IP支給 RPとIPを使い切ると太平洋標準時の日曜に4000RP+10000IPを再支給(何回でも) つまり本鯖で使ったことのないChampやルーンを試し放題である クライアント落としてC \Riot Gamesに置いてC \Riot Games\PBENew\lol.launcher.exeを起動 メンテ中にチャットルーム来れば誰かいるかもしれない 8月からアカウント作成について規制がかけられた どうやら月初めの3日間?しか登録できなくなったらしい